package com.xiantianxia.lty.common.util.excel.handler;

import java.text.SimpleDateFormat;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;

import com.xiantianxia.lty.common.util.cache.UserCache;
import com.xiantianxia.lty.plan.vo.ExcelImportPlanVo;
import com.xiantianxia.lty.user.vo.UserVo;

import cn.afterturn.easypoi.excel.entity.result.ExcelVerifyHandlerResult;
import cn.afterturn.easypoi.handler.inter.IExcelVerifyHandler;

public class PlanImportVerifyHandler implements IExcelVerifyHandler<ExcelImportPlanVo> {

	@Override
	public ExcelVerifyHandlerResult verifyHandler(ExcelImportPlanVo obj) {
		ExcelVerifyHandlerResult result = new ExcelVerifyHandlerResult();
		
		if(obj.getPlanDate() == null ||
			StringUtils.isBlank(obj.getUserName()) ||
			StringUtils.isBlank(obj.getPlanName()) ||
			StringUtils.isBlank(obj.getCount())
			) {
			result.setMsg("数据每列都不能为空");
			return result;
		}
		
		try {
			new SimpleDateFormat("yyyy/MM/dd").format(obj.getPlanDate());
		} catch (Exception e) {
			result.setMsg("计划日期格式有误，应该为yyyy/MM/dd");
			return result;
		}
		
		UserVo user = UserCache.getByUserName(obj.getUserName().trim());
		if(user == null) {
			result.setMsg(obj.getUserName().trim() + "这个用户名不存在");
			return result;
		}
		
		if(!validateLength(obj.getPlanName().trim(), 255)) {  // mysql中一个字符占一个长度，包括中文
			result.setMsg(obj.getUserName().trim() + "计划名称不能超过255个字符");
			return result;
		}
		
		if(!NumberUtils.isDigits(obj.getCount().trim()) || obj.getCount().trim().length() > 11) {
			result.setMsg("数量只能是正整数，并且不能超过11位");
			return result;
		}
		
		result.setSuccess(true);
		return result;
	}
	
	private boolean validateLength(String str, int len) {
		if(StringUtils.isNotBlank(str) && str.length() < len) {
			return true;
		}
		return false;
	}
}